Trong Elixir, tính toán được xem như một chuỗi các biến đổi cơ bản. Dữ liệu là bất biến, và toán tử = không dùng để gán, mà dùng cho so khớp mẫu.
1. Toán tử So khớp
So khớp cho phép bạn gán giá trị vào các mẫu. Nếu cấu trúc bên trái không khớp với bên phải, biến đổi sẽ thất bại. Elixir sử dụng các toán tử chuyên dụng cho luồng dữ liệu: Số học (+, -, *, /), So sánh (===, !==, >=), Và Nối (<> cho chuỗi, ++ cho danh sách).
2. Biểu thức 'with'
Biểu thức with tổ chức các biến đổi nhiều bước nơi thành công phụ thuộc điều kiện. Nó cho phép nối các phép so khớp bằng cách sử dụng <-. Khác với toán tử so khớp =, nếu một phép so khớp trong <- thất bại, biểu thức sẽ trả về giá trị không khớp thay vì ném ra lỗi.
3. Phạm vi và Cú pháp
Dưới lớp bề mặt, with được xử lý như một macro hoặc lời gọi hàm. Các biến được gán bên trong nó không rò rỉ ra phạm vi bên ngoài. Cú pháp như mean = with count = ..., do: sum/count là cách dựa trên biểu thức để tính toán các giá trị suy ra.
$$\text{trung bình} = \frac{\sum_{i=1}^{n} x_i}{n}$$